<!DOCTYPE html>
<html>
<head><meta name="generator" content="Hexo 3.8.0">
  <meta charset="utf-8">
  
  <title>JAVA</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  
  
  
  
  <meta property="og:type" content="website">
<meta property="og:title" content="JAVA">
<meta property="og:url" content="https://jameslin23.gitee.io/page/2/index.html">
<meta property="og:site_name" content="JAVA">
<meta property="og:locale" content="zh-CN">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="JAVA">
  
    <link rel="alternate" href="/atom.xml" title="JAVA" type="application/atom+xml">
  

  

  <link rel="icon" href="/css/images/mylogo.jpg">
  <link rel="apple-touch-icon" href="/css/images/mylogo.jpg">
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  <link href="https://fonts.googleapis.com/css?family=Open+Sans|Montserrat:700" rel="stylesheet" type="text/css">
  <link href="https://fonts.googleapis.com/css?family=Roboto:400,300,300italic,400italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <style type="text/css">
    @font-face{font-family:futura-pt; src:url("/css/fonts/FuturaPTBold.otf") format("woff");font-weight:500;font-style:normal;}
    @font-face{font-family:futura-pt-light; src:url("/css/fonts/FuturaPTBook.otf") format("woff");font-weight:lighter;font-style:normal;}
    @font-face{font-family:futura-pt-italic; src:url("/css/fonts/FuturaPTBookOblique.otf") format("woff");font-weight:400;font-style:italic;}
}

  </style>
  <link rel="stylesheet" href="/css/style.css">

  <script src="/js/jquery-3.1.1.min.js"></script>
  <script src="/js/bootstrap.js"></script>

  <!-- Bootstrap core CSS -->
  <link rel="stylesheet" href="/css/bootstrap.css">

  
    <link rel="stylesheet" href="/css/home.css">
  

  

  

  
  
  
    <link rel="stylesheet" href="/css/vdonate.css">
  

</head>
</html>


  <body>


  
    <header id="header">

	<!-- 背景图模式 -->
	

    
      <div id="intrologo" class="intro-logo" style="background-position:center; background-repeat:no-repeat; background-image: url(); background-size: auto 100%;">

      <!-- Support rolling -->  
        
        <section class="awSlider">
          <div class="carousel slide carousel-fade " data-ride="carousel">

            <!-- Wrapper for slides -->
            <div class="carousel-inner">
               
                  
                    <div class="item active">
                  
                    <img id="carousel-img0" src="/css/images/pose.jpg">
                  </div>

                  <!-- 自适应大图 -->
                  <script>
                      var img0 = new Image();
                      var imageTag0 = document.getElementById("carousel-img0");
                      img0.src = imageTag0.src;
                      img0.onload=function(){
                        if (img0.width / img0.height <= document.body.clientWidth / document.body.clientHeight) {
                          imageTag0.style.width = document.body.clientWidth + "px";
                        } else {
                          imageTag0.style.height = document.body.clientHeight + "px";
                          imageTag0.style.marginLeft = -(document.body.clientHeight * img0.width / img0.height - document.body.clientWidth) / 2 + "px";
                        }
                      };
                  </script>
                
            </div>

            <!-- Controls -->
            <a class="left carousel-control" href=".carousel" role="button" data-slide="prev">
              <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
              <span class="sr-only">Geri</span>
            </a>
            <a class="right carousel-control" href=".carousel" role="button" data-slide="next">
              <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
              <span class="sr-only">İleri</span>
            </a>
          </div>
        </section>
        <script>
          $('section.awSlider .carousel').carousel({
              pause: '',
              interval: 5000
          });
          var startImage = $('section.awSlider .item.active > img').attr('src');
          $('section.awSlider .carousel').on('slid.bs.carousel', function () {
              var bscn = $(this).find('.item.active > img').attr('src');
              $('section.awSlider > img').attr('src', bscn);
          });
        </script>
      

    
 


    <canvas width="100%" height="100%"></canvas>
    <script>
      var c = document.getElementsByTagName('canvas')[0],
          x = c.getContext('2d'),
          w = window.innerWidth,
          h = window.innerHeight,
          pr = window.devicePixelRatio || 1,
          f = 90,
          q,
          m = Math,
          r = 0,
          u = m.PI*2,
          v = m.cos,
          z = m.random
      c.width = w*pr
      c.height = h*pr
      x.scale(pr, pr)
      x.globalAlpha = 0.6

      <!-- 折线Polyline背景 -->
      
    </script>
    

    
      <div id="homelogo" class="homelogo" style="background: rgba(255,255,255,1);"> 
    

        
          <div class="homelogoback" style="border: 1px solid #404040;">
            <h1><a href="#content" id="logo">JAVA</a></h1>
            <h3></h3>
            <h5>LeBron Tao</h5>
            <!-- <p><a href="https://github.com/iTimeTraveler" target="_blank">Github</a></p> -->
          </div>
        
    
    </div>
  </div>

  <!-- 自适应主页背景大图 -->
  

 <!-- home_logo_image居中 -->
 
    <script>
        var homelogodiv = document.getElementById("homelogo");
        if (document.all.homelogo.offsetWidth > document.body.clientWidth) {
          homelogodiv.style.width = document.body.clientWidth + "px";
          homelogodiv.style.marginLeft = document.body.clientWidth * -0.5 + "px";
        } else {
          homelogodiv.style.width = homelogodiv.clientWidth  + "px";
          homelogodiv.style.marginLeft = (homelogodiv.clientWidth)  * -0.5 + "px";
        }
    </script>
  

  <div class="intro-navigate">
      <p class="navigater-list">
        
          <a id="beautifont" class="main-nav-link" href="/">首页</a>
        
          <a id="beautifont" class="main-nav-link" href="/archives">归档</a>
        
          <a id="beautifont" class="main-nav-link" href="/categories">分类</a>
        
          <a id="beautifont" class="main-nav-link" href="/tags">标签</a>
        
          <a id="beautifont" class="main-nav-link" href="/about">关于</a>
        
      </p>
  </div>

</header>
  
  <div id="container">
    <div id="wrap">
      
            
      <div id="content" class="outer">
        
          <section id="main" style="float:none;">
  
    <article id="post-排序算法之希尔排序" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2021/01/12/排序算法之希尔排序/">排序算法之希尔排序</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2021/01/12/排序算法之希尔排序/" class="article-date">
	  <time datetime="2021-01-12T07:58:07.000Z" itemprop="datePublished">2021-01-12</time>
	</a>

      
    <a class="article-category-link" href="/categories/数据结构与算法/">数据结构与算法</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          背景希尔排序是基于直接插入排序，它在直接插入排序增加一个新特性，大大提高插入排序的执行效率。
分析下直接插入排序，首先我们将需要插入的数放在一个临时变量中，这也是一个标记符，左边是已经排好序的
标记符右边是需要排序的，接着将标记的数和左边排好序的数进行比较，假如比目标数大则将左边排好序的数向右边移动一位，
直到找到其小的位置进行插入。
这里存在一个效率问题，如果一个很小的数很靠近右边的位置，那么插入到左边排好序序列，那么左边排好序的数据项都必须向右边
移动一位，这个步骤就是接近执行N次复制...
        </p>
        <p class="article-more-link">
          <a href="/2021/01/12/排序算法之希尔排序/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-排序算法之直接插入排序" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2021/01/09/排序算法之直接插入排序/">排序算法之直接插入排序</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2021/01/09/排序算法之直接插入排序/" class="article-date">
	  <time datetime="2021-01-09T11:54:50.000Z" itemprop="datePublished">2021-01-09</time>
	</a>

      
    <a class="article-category-link" href="/categories/数据结构与算法/">数据结构与算法</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          直接插入排序的规律每一步将一个待排序的记录，插入到前面已经排好序的有序序列中，直到插完位置


时间复杂度时间复杂度：平均时间O(N^2)  最差时间O(N^2) 相对稳定
编码思路
定义第一个for循环，从下标1开始，逐个进行排序
定义一个当前变量tmep[i]
定义第二个for循环，从已排好序的序列中进行查找
找到合适条件插入位置上

代码1234567891011121314151617181920212223242526public static int[] insertSort(...
        </p>
        <p class="article-more-link">
          <a href="/2021/01/09/排序算法之直接插入排序/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-排序算法之选择排序" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2021/01/09/排序算法之选择排序/">排序算法之选择排序</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2021/01/09/排序算法之选择排序/" class="article-date">
	  <time datetime="2021-01-09T11:30:46.000Z" itemprop="datePublished">2021-01-09</time>
	</a>

      
    <a class="article-category-link" href="/categories/数据结构与算法/">数据结构与算法</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          选择排序规律
从待排序中，找到关键字最小的元素

如果最小元素不是待排序列中的第一个元素，将其和第一个元素互换

从余下N-1个元素中，找出关键字最小的元素，重复(1)、(2)步，直到排序结束




时间复杂度时间复杂度：平均时间O(N^2)  最差时间O(N^2) 相对稳定
编码思路
定义2个for循环，第一个for循环是需要比较的轮数，第二for循环找出最小的数并进行交换

代码123456789101112131415public static int[] selectSort(i...
        </p>
        <p class="article-more-link">
          <a href="/2021/01/09/排序算法之选择排序/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-排序算法之冒泡排序" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2021/01/09/排序算法之冒泡排序/">排序算法之冒泡排序</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2021/01/09/排序算法之冒泡排序/" class="article-date">
	  <time datetime="2021-01-09T10:58:41.000Z" itemprop="datePublished">2021-01-09</time>
	</a>

      
    <a class="article-category-link" href="/categories/数据结构与算法/">数据结构与算法</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          冒泡算法规律
比较相邻的元素，如果第一个比第二个大，就交换。
对每一对相邻元素做同样的工作，从开始第一对到结尾的最后一对，这步做完，最后元素会是最大的数（第一波冒泡完成）
针对所有的元素以上的步骤，除了最后一个。
持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。



时间复杂度时间复杂度：平均时间O(N^2)  最差时间O(N^2) 相对稳定
编码思路
两个for循环，第一个for循环冒泡轮数，第二个for循环进行换位判断。
定义变量temp

代码12345678...
        </p>
        <p class="article-more-link">
          <a href="/2021/01/09/排序算法之冒泡排序/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-ThreadLocal" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2021/01/03/ThreadLocal/">ThreadLocal</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2021/01/03/ThreadLocal/" class="article-date">
	  <time datetime="2021-01-03T05:37:43.000Z" itemprop="datePublished">2021-01-03</time>
	</a>

      
    <a class="article-category-link" href="/categories/并发编程/">并发编程</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          ThreadLocalThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射，各个线程之间的变量互不干扰，在高并发场景下，可以实现无状态的调用。适用于各个线程不共享变量值的操作。
ThreadLocal 工作原理每个线程的内部维护一个ThreadLocalMap，它是一个Map(key,value)数据格式，key是一个弱引用。也就是ThreadLocal本身,而value存在是线程变量的值。
也就是说ThreadLocal本身并不存储线程的...
        </p>
        <p class="article-more-link">
          <a href="/2021/01/03/ThreadLocal/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-JVM篇之垃圾回收器G1" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2020/12/31/JVM篇之垃圾回收器G1/">JVM篇之垃圾回收器G1</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2020/12/31/JVM篇之垃圾回收器G1/" class="article-date">
	  <time datetime="2020-12-31T02:10:36.000Z" itemprop="datePublished">2020-12-31</time>
	</a>

      
    <a class="article-category-link" href="/categories/JVM/">JVM</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          背景G1（Garbage-First）是一款面向服务端应用的垃圾收集器，主要针对配备多核CPU及大容量内存的机器，以极高概率满足GC停顿时间的同时，还兼具高吞吐量的性质。
在JDK1.7版本正式启动，移除了Experimental的标识，是JDK9以后的默认垃圾回收器，取代了CMS回收器以及Parallel组合，被Oracle官方称为“全功能垃圾收集器”。
特点分代收集

从分代上看，G1依然属于分代型垃圾回收器，它会区分年轻代和老年代，年轻代依然有Eden区和Survivor区。从堆的结...
        </p>
        <p class="article-more-link">
          <a href="/2020/12/31/JVM篇之垃圾回收器G1/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-JVM篇之垃圾回收器CMS" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2020/12/31/JVM篇之垃圾回收器CMS/">JVM篇之垃圾回收器CMS</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2020/12/31/JVM篇之垃圾回收器CMS/" class="article-date">
	  <time datetime="2020-12-31T00:31:20.000Z" itemprop="datePublished">2020-12-31</time>
	</a>

      
    <a class="article-category-link" href="/categories/JVM/">JVM</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          背景
在JDK 1.5时期，HotSpot推出一款在强交互应用中几乎认为有划时代意义的垃圾收集器：CMS(Concurrent-Mark-Sweep)收集器，这款收集器是HotSpot虚拟机中第一款真正意义上的并发收集器，他第一次实现了让垃圾收集线程与用户线程同时工作，
CMS的关注点是尽可能缩短垃圾收集时用户线程的停顿时间。停顿时间越短（低延迟）就越适合与用户交互程序，良好的响应速度能提高用户体验。

工作原理CMS整个过程比之前收集器要复杂，整个过程分4个主要阶段，即初始标记阶段、并发...
        </p>
        <p class="article-more-link">
          <a href="/2020/12/31/JVM篇之垃圾回收器CMS/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-JVM篇之垃圾回收器Parallel" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2020/12/30/JVM篇之垃圾回收器Parallel/">JVM篇之垃圾回收器Parallel</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2020/12/30/JVM篇之垃圾回收器Parallel/" class="article-date">
	  <time datetime="2020-12-30T12:58:15.000Z" itemprop="datePublished">2020-12-30</time>
	</a>

      
    <a class="article-category-link" href="/categories/JVM/">JVM</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          背景

图中展示了7种作用于不同分代的收集器，如果两个收集器相连，说明他们可以搭配使用。虚拟机所处区域表示它是属于新生代还是老年代收集器
新生代收集器：Serial、ParNew、Paraller Scavenge
老年代收集器：CMS、Serial Old、Parallel Old
整堆收集器：G1
Parallel Scavenge吞吐量优先的垃圾回收器，jdk1.8默认垃圾回收器
特点：属于新生代收集器，复制算法，并行的多线程收集器。
该收集器的目标是达到一个可控制的吞吐量，还有一个...
        </p>
        <p class="article-more-link">
          <a href="/2020/12/30/JVM篇之垃圾回收器Parallel/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-JVM篇之垃圾回收器Serial" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2020/12/30/JVM篇之垃圾回收器Serial/">JVM篇之垃圾回收器Serial</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2020/12/30/JVM篇之垃圾回收器Serial/" class="article-date">
	  <time datetime="2020-12-30T12:21:10.000Z" itemprop="datePublished">2020-12-30</time>
	</a>

      
    <a class="article-category-link" href="/categories/JVM/">JVM</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          背景

图中展示了7种作用于不同分代的收集器，如果两个收集器相连，说明他们可以搭配使用。虚拟机所处区域表示它是属于新生代还是老年代收集器
新生代收集器：Serial、ParNew、Paraller Scavenge
老年代收集器：CMS、Serial Old、Parallel Old
整堆收集器：G1
Serialserial收集器是最基本、发展历史最悠久的收集器。
特点：单线程、简单高效，对应当个CPU的环境，Serial收集器由于没有线程交互的开销，专心做垃圾回收自然获得最高单线程效率...
        </p>
        <p class="article-more-link">
          <a href="/2020/12/30/JVM篇之垃圾回收器Serial/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  
    <article id="post-JVM篇之标记压缩算法" class="article article-type-post" itemscope itemprop="blogPost">
  <div id="articleInner" class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="thumb" itemprop="name">
      <a class="article-title" href="/2020/12/30/JVM篇之标记压缩算法/">JVM篇之标记压缩算法</a>
    </h1>
  

      </header>
    
    <div class="article-meta">
      
	<a href="/2020/12/30/JVM篇之标记压缩算法/" class="article-date">
	  <time datetime="2020-12-30T12:06:38.000Z" itemprop="datePublished">2020-12-30</time>
	</a>

      
    <a class="article-category-link" href="/categories/JVM/">JVM</a>

      
      

    </div>
    <div class="article-entry" itemprop="articleBody">
      
        <p class="article-excerpt-content">
          标记-压缩算法背景复制算法的高效是建立在存活对象少的、垃圾对象多的前提下。这种情况在新生代经常发生，但是在老年代，更常见的情况大部分对象都是存活对象，如果采用复制算法，由于存活对象多，复制成本也很高，因此老年代垃圾回收特征，需要使用其他算法。
执行过程
第一阶段和标记清除一样，从根节点开始标记所有被引用对象。
第二阶段将所有存活的对象压缩到内存的一段，按顺序排放。
之后清理边界外所有空间。

内存图示

缺点
从效率来看，标记-整理算法要低于复制算法
移动对象的同时，如果对象被其它对象引用...
        </p>
        <p class="article-more-link">
          <a href="/2020/12/30/JVM篇之标记压缩算法/#more">阅读全文</a>
        </p>
      
    </div>
    <footer class="article-footer">
      
      
      
      

    </footer>
  </div>
  
</article>

<!-- Table of Contents -->


  


  <nav id="page-nav">
    
    <a class="extend prev" rel="prev" href="/">&laquo; 上一页</a><a class="page-number" href="/">1</a><span class="page-number current">2</span><a class="page-number" href="/page/3/">3</a><a class="page-number" href="/page/4/">4</a><span class="space">&hellip;</span><a class="page-number" href="/page/6/">6</a><a class="extend next" rel="next" href="/page/3/">下一页 &raquo;</a>
  </nav>

</section>
        
      </div>
      
        <div align="center" style="margin-top: 30px;"><hr class="hr" style="margin:0px; height:3px;"></div>
      
      <footer id="footer">
  

  <div class="container">
      	<div class="row">
	      <p> Powered by <a href="http://hexo.io/" target="_blank">Hexo</a> and <a href="https://github.com/iTimeTraveler/hexo-theme-hiker" target="_blank">Hexo-theme-hiker</a> </p>
	      <p id="copyRightEn">Copyright &copy; 2013 - 2021 JAVA All Rights Reserved.</p>
	      
	      
    		<p class="busuanzi_uv">
				访客数 : <span id="busuanzi_value_site_uv"></span> |  
				访问量 : <span id="busuanzi_value_site_pv"></span>
		    </p>
  		   
		</div>

		
  </div>
</footer>


<!-- min height -->

<script>
    var wrapdiv = document.getElementById("wrap");
    var contentdiv = document.getElementById("content");
    var allheader = document.getElementById("allheader");

    wrapdiv.style.minHeight = document.body.offsetHeight + "px";
    if (allheader != null) {
      contentdiv.style.minHeight = document.body.offsetHeight - allheader.offsetHeight - document.getElementById("footer").offsetHeight + "px";
    } else {
      contentdiv.style.minHeight = document.body.offsetHeight - document.getElementById("footer").offsetHeight + "px";
    }
</script>
    </div>
    <!-- <nav id="mobile-nav">
  
    <a href="/" class="mobile-nav-link">Home</a>
  
    <a href="/archives" class="mobile-nav-link">Archives</a>
  
    <a href="/categories" class="mobile-nav-link">Categories</a>
  
    <a href="/tags" class="mobile-nav-link">Tags</a>
  
    <a href="/about" class="mobile-nav-link">About</a>
  
</nav> -->
    

<!-- mathjax config similar to math.stackexchange -->

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {
      inlineMath: [ ['$','$'], ["\\(","\\)"] ],
      processEscapes: true
    }
  });
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      tex2jax: {
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
      }
    });
</script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for(i=0; i < all.length; i += 1) {
            all[i].SourceElement().parentNode.className += ' has-jax';
        }
    });
</script>

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>


  <link rel="stylesheet" href="/fancybox/jquery.fancybox.css">
  <script src="/fancybox/jquery.fancybox.pack.js"></script>


<script src="/js/scripts.js"></script>


  <script src="/js/home.js"></script>










	<div style="display: none;">
    <script src="https://s95.cnzz.com/z_stat.php?id=1260716016&web_id=1260716016" language="JavaScript"></script>
  </div>



	<script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js">
	</script>






  </div>

  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h2 class="modal-title" id="myModalLabel">设置</h2>
      </div>
      <hr style="margin-top:0px; margin-bottom:0px; width:80%; border-top: 3px solid #000;">
      <hr style="margin-top:2px; margin-bottom:0px; width:80%; border-top: 1px solid #000;">


      <div class="modal-body">
          <div style="margin:6px;">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseOne" onclick="javascript:setFontSize();" aria-expanded="true" aria-controls="collapseOne">
              正文字号大小
            </a>
          </div>
          <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
          <div class="panel-body">
            您已调整页面字体大小
          </div>
        </div>
      


          <div style="margin:6px;">
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" onclick="javascript:setBackground();" aria-expanded="true" aria-controls="collapseTwo">
              夜间护眼模式
            </a>
        </div>
          <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
          <div class="panel-body">
            夜间模式已经开启，再次单击按钮即可关闭 
          </div>
        </div>

        <div>
            <a data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="true" aria-controls="collapseThree">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;关 于&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a>
        </div>
         <div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
          <div class="panel-body">
            JAVA
          </div>
          <div class="panel-body">
            Copyright © 2021 LeBron Tao All Rights Reserved.
          </div>
        </div>
      </div>


      <hr style="margin-top:0px; margin-bottom:0px; width:80%; border-top: 1px solid #000;">
      <hr style="margin-top:2px; margin-bottom:0px; width:80%; border-top: 3px solid #000;">
      <div class="modal-footer">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
      </div>
    </div>
  </div>
</div>
  
  <a id="rocket" href="#top" class=""></a>
  <script type="text/javascript" src="/js/totop.js?v=1.0.0" async=""></script>
  
</body>
</html>